home *** CD-ROM | disk | FTP | other *** search
- MINSTACKSIZE EQU 2400
-
- section text,code
-
-
- xdef __stackswap
- __stackswap
- MOVE.L 4,A0
- MOVE.L $114(A0),A0
- MOVE.L $3A(A0),A1
- CMP.L SP,A1
- BCC.S 1$
- CMP.L $3E(A0),SP
- BHI.S 1$
- ADD.L #MINSTACKSIZE,A1
- CMP.L SP,A1
- BCC.S 1$
- MOVE.L 4(SP),A0
- JMP (A0)
-
- 1$ MOVEM.L D2/A4/A5,-(SP)
- MOVE.L 4,A5
- MOVEQ #0,D1
- MOVE.L #MINSTACKSIZE,D0
- EXG A5,A6
- JSR -$C6(A6)
- EXG A5,A6
- MOVE.L D0,A4
- MOVE.L A4,D0
- BNE.S 3$
- MOVEQ #0,D2
- 2$ MOVE.L D2,D0
- MOVEM.L (SP)+,D2/A4/A5
- RTS
-
- 3$ LEA MINSTACKSIZE(A4),A1
- LEA -8(A1),A0
- MOVE.L A1,-(A0)
- MOVE.L A4,-(A0)
- MOVE.L A0,8(A0)
- MOVE.L A0,A4
- EXG A5,A6
- JSR -$2DC(A6)
- EXG A5,A6
- MOVE.L 8(A4),A0
- LEA $3C(A0),A0
- MOVEQ #10,D0
- 4$ MOVE.L -(A0),-(SP)
- DBRA D0,4$
- MOVE.L (SP),A0
- JSR (A0)
- MOVE.L D0,D2
- MOVE.L A4,A0
- EXG A5,A6
- JSR -$2DC(A6)
- MOVE.L (A4),A1
- MOVE.L #MINSTACKSIZE,D0
- JSR -$D2(A6)
- EXG A5,A6
- BRA.S 2$
-
- end
-